#include <bits/types/sigset_t.h>
#include <csignal>
#include <cstddef>
#include <iostream>
#include <unistd.h>
using namespace std;
void cb(int sig) {
    cout << "捕获到了信号：" << sig << endl;
}
int main() {
    sigset_t newset, oldset;
    sigemptyset(&newset);
    sigemptyset(&oldset);
    sigaddset(&newset, SIGINT);
    sigaddset(&newset, 40);
    signal(SIGINT, cb);
    signal(40, cb);
    sigprocmask(SIG_BLOCK, &newset, &oldset);
    // pid_t id = 
    // 接下来就是讲这两个信号给发送五次了
    cout << "5秒后执行我们的各5次发送信号的操作！" << endl;
    sleep(5);
    for(int i = 0; i < 5; i++) {
        kill(getpid(), SIGINT);
        kill(getpid(), 40);
    }
    // 取消阻塞
    cout << "3秒后解除对应的阻塞，注意观察结果！" << endl;
    sleep(3);
    sigprocmask(SIG_SETMASK, &oldset, NULL);
    cout << "Done!" << endl;
    return 0;
}